﻿using System;
using System.Collections.Generic;
using System.Runtime.ConstrainedExecution;

namespace SplendidCRM.Ext.Models
{
    public class CallInboundModel
    {
        public Guid Id { get; set; }
        public String Name { get; set; }
        public Guid? Reason_Id { get; set; }
        public String Description { get; set; }
        public Guid Case_Id { get; set; }
    }

    public class CallInboundViewModel
    {
        public dynamic Call { get; set; }
        public dynamic Customer { get; set; }
        
        public SubcriberBasicInfo SubcriberBasicInfo { get; set; }
        public BalanceInfo BalanceInfo { get; set; }
        public List<ProductPackageVasService> ProductList { get; set; }

        public IDictionary<String, String> PriorityList { get; set; }
        public IEnumerable<dynamic> CallHistory { get; set; }
    }

    public class SubcriberBasicInfo
    {
        public string PhoneNumber { get; set; }
        public string MainProduct { get; set; }

        public string LifeCycleStatus { get; set; }
        public DateTime? ActiveExpiryDate { get; set; }
        public DateTime? SuspendExpiryDate { get; set; }
        public DateTime? DisableExpiryDate { get; set; }
        public string FraudState { get; set; }
        public DateTime? FirstActiveDate { get; set; }
    }


    public enum LifeCycleStateTypes
    {
        Idle = 1,
        Active = 2,
        Suspend = 3,
        Disable = 4,
        Pool = 5
    }

    public enum FraudStateTypes
    {
        NotBlacklisted=0,
        Blacklisted=1
    }

    public enum BillStatusTypes
    {
        Successful,
        Failed
    }

    public class BalanceInfo
    {
        public long Amount { get; set; }
        public DateTime? ExpirationTime { get; set; }
    }

    public class ProductPackageVasService
    {
        public string Name { get; set; }
        public DateTime? EffectiveTime { get; set; }
        public DateTime? RentCycleStartTime { get; set; }
        public DateTime? RentCycleEndTime { get; set; }
        public string RentStatus { get; set; }
    }
}